# 汉诺塔的移动可以用递归函数非常简单地实现。
#
# 请编写move(n, a, b, c)函数，
# 它接收参数n，表示3个柱子A、B、C中第1个柱子A的盘子数量，
# 然后打印出把所有盘子从A借助B移动到C的方法，例如：


# 递归思想的前提是每层的动作具有相似性，任何复杂高阶汉诺塔都可以分解为最基础的基础步骤。
#
# 取阶数n=1，完成任务的步骤为：A→C；该步骤为基础步骤
#
# 取阶数n=2，完成任务的步骤为：上面(2-1=1)个：A→B；底层1个：A→C；从A→B的上面(2-1=1)个：B→C。
#
# 提炼出阶数为n的相似规律：上面(n-1)个：A→B；底层1个：A→C；从A→B的上面(n-1)个：B→C。

def move(n,a,b,c):
    if n==1:
        print(a,'-->',c)    # n＞1,视为1个最大的圆盘和剩余n-1个圆盘当一个整体移动,
                            # 那n-1个移到b,最大那个移到c,即可实现递归
    else:
        move(n-1,a,c,b)     #借助c将a上的n-1个移动到b
        print(a,'-->',c)    #将a上留下最大块移到c上
        move(n-1,b,a,c)     #借助a将b上n-1个移动到c上


if __name__ == '__main__':
    move(3,'A','B','C')